"""
字符串 是不可以更改的数据类型
一旦值确定以后 该值不可以更改

s0 = "hello"
s0 = "hi"

id(s0) 检测 值对应的唯一标识
对变量s0重新赋值  变量对应的内存地址更改  更改前以及更改后的内存地址 分别用于存放hello与hi 互补干扰


基础数据类型 （不考虑None）
int  float  bool  str  全部是不可变数据类型
复杂数据类型
list 是可变类型
扩展：

"""
# s0 = "abcdefg"
# print(len(s0), s0[0], s0[6])

# 字符串不可以通过索引修改字符
# s0[0] = "1"
# 不可变

# print(id(s0))
# s0 = s0 * 3
# print(id(s0))

# s0 = s0 + "123"
# print(id(s0))


# s0 = "1bcdefg"
# print(id(s0))


# 数字是不可变数据类型

# a = 10.0
# print(id(a))
# a = 20.0
# print(id(a))

# b = True
# print(id(b))
# b = False
# print(id(b))

# 第一块内存存储空列表  第二块内存存储空列表  两块内存互不干扰
# l0 = []
# print(id(l0))
# l0 = []
# print(id(l0))

# 验证列表是可变数据类型
# l0 = []
# print(id(l0))
# l0.append(1)
# print(id(l0))
# l0.append(2)
# print(id(l0))
# l0.append(3)
# print(id(l0))
#
# print(len(l0), l0[0], l0[2])
#
# l0[0] = 10
# l0.pop()
# print(l0, id(l0))


# l0 = [1, 2, 3]
# l1 = list(l0)
# print(type(l0), type(l1), l1)

# l0 = [10, 20, 30, 40]
# print(len(l0))
# print(l0[0], l0[3])
# print(l0[-4], l0[-1])


# l0 = [10, 20, 30, 40]

# for e in l0:
#     print(e)


# for i in range(len(l0)):
#     print(i, l0[i])

# 如何判定一个字符串或者列表是否对称
# abcdefedcba     [1,2,3,4,5,4,3,2,1]

# s0 = "abcdefedc0ba"
# length = len(s0)
# for i in range(length // 2):
#     print(s0[i], s0[length-1-i])
#     if s0[i] != s0[length-1-i]:
#         print(f"不是对称")
#         break
# else:
#     print("对称")

# 统计个数
print([1, 2, 3, 4, 5, 2, 1, 3].count(1))
# 找到第一次出现索引 找不到报错
print([1, 2, 3, 4, 5, 2, 1, 3].index(1))

# l0 = []
# 末尾插入
# l0.append(1)
# l0.append(2)
# l0.append(3)
# [1,2,3]
# 指定位置
# l0.insert(1, 1.5)
# l0.insert(3, 2.5)

# 插入
# l0.extend(["a", "b", "c"])
# l0.extend("+-*/")

# [1, 1.5, 2, 2.5, 3, 'a', 'b', 'c', '+', '-', '*', '/']
# pop 默认删除最后一个(也可以指定删除位置) 并且把返回内容返回
# r = l0.pop()
# print(r, l0)
#
# r = l0.pop(3)
# print(r, l0)
#
# l0.remove(1.5)
# print(l0)
# 如果不存在则报错
# l0.remove(15)

# 清空
# l0.clear()
# print(l0)


l0 = [1, 6, 5, 8, 9, 4, 3, 2]
# 逆序
l0.reverse()
print(l0)

l0.sort()
print(l0)

l0.sort(reverse=True)
print(l0)


